It happened in the living room of a home on the 800 block of North Preston Street, city police said.
During an argument, a 68-year-old man stabbed a 60-year-old woman multiple times in the abdomen and a 61-year-old man in the face and hand, police said.
He was shot in the left thigh and right hand "in self-defense," PPD said, and all three were taken to Presbyterian Hospital.
The woman and the 68-year-old man are critical while the 61-year-old man is said to be in stable condition.
Both the knife and gun were recovered from the scene, and the 68-year-old will be arrested when he is discharged from the hospital, authorities added.
Click here to follow Daily Voice Drexel Hill-Upper Darby and receive free news updates.